/**
 * 全局注册公用方法
 */

const commonmethods = {
	//check的基础数据
	checkData(keyname = "id") {
		return {
			indeterminate: false, //全选图标控制
			checkAll: false, //是否全选
			keyname: keyname, //lable 的键名
			datas: [], //源数据
			checkedkeys: [] //已选择的数据
		}
	},
	/**
	 * 用递归将JSON数据的键值转为小写
	 * @param {Object} jsonDatas
	 */
	JsonKeyChangeLower(jsonDatas, reultData) {
		if(!reultData) {
			reultData = jsonDatas;
		}
		if(!isEmpty(jsonDatas)) {
			if(jsonDatas instanceof Array) { //当是数组时
				jsonDatas.each(function(data) {
					this.JsonKeyChangeLower(data, reultData);
				})
			} else if(jsonDatas instanceof Object) { //当是对象时
				for(const key in jsonDatas) {
					var newkey = key.toLowerCase();
					var value = jsonDatas[key];
					if(newkey != key) {
						jsonDatas[newkey] = value;
						delete(jsonDatas[key]);
					}
					if(!isEmpty(value)) {
						this.JsonKeyChangeLower(jsonDatas[newkey], reultData);
					}
				}
			}
		}
		return reultData;
	},
	resolveExcel(obj, backcall) { //该方法基于xlsx.full.min.js插件，用于change事件之上
		var result = {
			msg: "ok",
			data: []
		}; //返回结果
		var wb; //读取完成的数据
		var rABS = false; //是否将文件读取为二进制字符串
		if(!obj.files) {
			result.msg = "导入文件出现异常";
			return backcall(result);
		}
		const IMPORTFILE_MAXSIZE = 1 * 5048; //这里可以自定义控制导入文件大小
		var suffix = obj.files[0].name.split(".")[1]
		if(suffix != 'xls' && suffix != 'xlsx'&& suffix != 'csv') {
			result.msg = "导入的文件格式不正确（请导入后缀名为.xls或.xlsx文件）";
			return backcall(result);
		}
		if(obj.files[0].size / 1024 > IMPORTFILE_MAXSIZE) {
			result.msg = "导入的表格文件不能大于5M";
			return backcall(result);
		}
		var f = obj.files[0];
		var reader = new FileReader();

		reader.onload = (e) => {
			var data = e.target.result;
			if(rABS) {
				wb = XLSX.read(btoa(fixdata(data)), { //手动转化
					type: 'base64'
				});
			} else {
				wb = XLSX.read(data, {
					type: 'binary'
				});
			}
			//wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
			//wb.Sheets[Sheet名]获取第一个Sheet的数据
			result.data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
			console.log(result);
			return backcall(result);
		};
		if(rABS) {
			reader.readAsArrayBuffer(f);
		} else {
			reader.readAsBinaryString(f);
		}
	}

}

export default commonmethods;